home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / mxcode / sbmixer / sbmixer.c < prev    next >
Text File  |  1994-12-10  |  3KB  |  106 lines

  1. /* Input sources */
  2. #define inpmicdefault 0
  3. #define inpcdaudio    1
  4. #define inpmicrophone 2
  5. #define inplinein     3
  6. /* Input filters */
  7. #define lowfilter  0
  8. #define highfilter 1
  9. #define nofilter   4
  10.  
  11. /* Output modes */
  12. #define mono   0
  13. #define stereo 1
  14. /* Output filters */
  15. #define filteron     0
  16. #define filterbypass 1
  17.  
  18. /* Function prototypes */
  19. void init(unsigned int baseio);
  20. void resetmixer(void);
  21. void setinputsettings (unsigned char source, unsigned char filter);
  22. void setoutputsettings(unsigned char mode,   unsigned char filter);
  23.  
  24. void setmicvolume   (unsigned char volume);
  25. void setmastervolume(unsigned char left, unsigned char right);
  26. void setvoicevolume (unsigned char left, unsigned char right);
  27. void setfmvolume    (unsigned char left, unsigned char right);
  28. void setcdvolume    (unsigned char left, unsigned char right);
  29. void setlinevolume  (unsigned char left, unsigned char right);
  30.  
  31. /****************************************************************************/
  32.  
  33. void out(unsigned int port, unsigned char value)
  34.   {
  35.     asm {
  36.       mov    dx, port
  37.       mov    al, value
  38.       out    dx, al
  39.      }
  40.   }
  41. unsigned char in(unsigned int port)
  42.   {
  43.     asm {
  44.       mov    dx, port
  45.       in     al, dx
  46.      }
  47.   }
  48.  
  49. unsigned int mixeraddrport;
  50. unsigned int mixerdataport;
  51.  
  52. void init(unsigned int baseio)
  53.   {
  54.     mixeraddrport = baseio+4;  /* 2x4 */
  55.     mixerdataport = baseio+5;  /* 2x5 */
  56.   }
  57.  
  58. void writemixer(unsigned char reg, unsigned char value)
  59.   {
  60.     out(mixeraddrport, reg);
  61.     out(mixerdataport, value);
  62.   }
  63. unsigned char readmixer(unsigned char reg)
  64.   {
  65.     out(mixeraddrport, reg);
  66.     return in(mixerdataport);
  67.   }
  68.  
  69. void resetmixer(void)
  70.   {
  71.     writemixer(0x00, 0xFF);
  72.   }
  73. void setinputsettings(unsigned char source, unsigned char filter)
  74.   {
  75.     writemixer(0x0C, (source << 1) + (filter << 3));
  76.   }
  77. void setoutputsettings(unsigned char mode, unsigned char filter)
  78.   {
  79.     writemixer(0x0E, (mode << 1) + (filter << 5));
  80.   }
  81. void setmicvolume(unsigned char volume)
  82.   {
  83.     writemixer(0x0A, volume);
  84.   }
  85. void setmastervolume(unsigned char left, unsigned char right)
  86.   {
  87.     writemixer(0x22, (left << 4) + right);
  88.   }
  89. void setvoicevolume(unsigned char left, unsigned char right)
  90.   {
  91.     writemixer(0x04, (left << 4) + right);
  92.   }
  93. void setfmvolume(unsigned char left, unsigned char right)
  94.   {
  95.     writemixer(0x26, (left << 4) + right);
  96.   }
  97. void setcdvolume(unsigned char left, unsigned char right)
  98.   {
  99.     writemixer(0x28, (left << 4) + right);
  100.   }
  101. void setlinevolume(unsigned char left, unsigned char right)
  102.   {
  103.     writemixer(0x2E, (left << 4) + right);
  104.   }
  105.  
  106.